//videoDetails.js
import { getDetails, getComments, toAddComment, toAddLike } from '../../utils/api';
import Toast from '../../miniprogram_npm/vant-weapp/toast/toast';
import Notify from '../../miniprogram_npm/vant-weapp/notify/notify';
//获取应用实例
const app = getApp()

Page({
	onReady: function (res) {
		this.videoContext = wx.createVideoContext('myVideo')
	},
	data: {
		currentPageId: '',
		currentPageType: '',
		videoPlayStatus: false, // 视频播放状态
		mediaDetails: null,
		recommendedList: [],
		commentList: [],
		commentModal: false, //评论列表模态框的状态  true-隐藏  false-显示
		addCommentModal: false, //添加模态框的状态  true-隐藏  false-显示
		textareaValue: '',
		advObj: null
	},
	toPlayVideo() {
		this.videoContext.play();
		this.setData({
			videoPlayStatus: true
		});
	},
	// 获取页面内容详情
	toGetDetails() {
		const params = {
			id: this.data.currentPageId,
			uid: app.globalData.uid
		};
		Toast.loading({
			mask: true,
			duration: 0,
			mask: false,
			forbidClick: true,
			message: '加载中...'
		});
		getDetails(params).then((res)=>{
			Toast.clear();
			wx.stopPullDownRefresh();
			if(res.code === 200){
				res.detail.updated_at = res.detail.updated_at.split(' ')[0];
				res.likes.map(item=>{
					item.updated_at = item.updated_at.split(' ')[0];
				})
				this.setData({
					mediaDetails: res.detail,
					recommendedList: res.likes
				})
			}else{
				this.errorToast(res.msg,'error');
			}
		}).catch(e=>{
			Toast.clear();
			this.errorToast('服务异常','error');
		})
	},
	// 浏览图片
	toViewImage(event) {
		const src = event.currentTarget.dataset.url;
		//图片预览
		wx.previewImage({
		  current: src, // 当前显示图片的http链接
		  urls: [src] // 需要预览的图片http链接列表
		})
	},
	// 点赞
	likeItem(e) {
		const status = e.currentTarget.dataset.status;
		const params = {
			digital_id: this.data.currentPageId,
			uid: app.globalData.uid
		};
		if(!status){
			Toast.loading({
				mask: true,
				duration: 0,
				mask: false,
				forbidClick: true,
				message: '加载中...'
			});
			toAddLike(params).then((res)=>{
				Toast.clear();
				if(res.code === 200){
					this.errorToast('点赞成功','success');
					let likeNum = this.data.mediaDetails.like += 1
					this.setData({
						'mediaDetails.mylike': true,
						'mediaDetails.like': likeNum
					})
				}else{
					this.errorToast(res.msg,'error');
				}
			}).catch(e=>{
				Toast.clear();
				this.errorToast('服务异常','error');
			})
		}
	},
	// 展开评论
	showCommentModal(event) {
		if(event.currentTarget.dataset.type === 'list'){
			this.setData({
				commentModal: true,
				addCommentModal: false
			})
			const params = {
				id: this.data.currentPageId
			};
			Toast.loading({
				mask: true,
				duration: 0,
				mask: false,
				forbidClick: true,
				message: '加载中...'
			});
			getComments(params).then((res)=>{
				Toast.clear();
				if(res.code === 200){
					res.comments.map(item=>{
						item.created_at = item.created_at.split(' ')[0]
					})
					this.setData({
						commentList: res.comments
					})
				}else{
					this.errorToast(res.msg,'error');
				}
			}).catch(e=>{
				Toast.clear();
				this.errorToast('服务异常','error');
			})
		}else{
			this.setData({
				commentModal: false,
				addCommentModal: true
			})
		}
	},
	// 隐藏弹窗
	hideModal() {
		this.setData({
			commentModal: false,
			addCommentModal: false,
			textareaValue: ''
		}) 
	},
	// 提交评论
	bindFormSubmit(event) {
		const textValue = event.detail.value.textarea;
		if(textValue.length < 5){
			this.errorToast('评论不得少于5个字符！','error');
		}else{
			const params = {
				digital_id: this.data.currentPageId,
				uid: app.globalData.uid,
				content: textValue
			};
			Toast.loading({
				mask: true,
				duration: 0,
				mask: false,
				forbidClick: true,
				message: '加载中...'
			});
			toAddComment(params).then((res)=>{
				Toast.clear();
				if(res.code === 200){
					this.errorToast('评论成功','success');
					this.hideModal();
					let commentNum = this.data.mediaDetails.comment += 1
					this.setData({
						'mediaDetails.comment': commentNum
					})
				}else{
					this.errorToast(res.msg,'error');
				}
			}).catch(e=>{
				Toast.clear();
				this.errorToast('服务异常','error');
			})
		}
	},
	// 分享
	onShareAppMessage( options ){
		// const that = this;
	　　// 设置菜单中的转发按钮触发转发事件时的转发内容
		const shareObj = {
	　　　　title: "",        // 默认是小程序的名称(可以写slogan等)
	　　　　path: `/pages/videoDetails/videoDetails?id=${this.data.currentPageId}&type=${this.data.currentPageType}`,// 默认是当前页面，必须是以‘/’开头的完整路径
	　　　　imgUrl: '', //自定义图片路径，可以是本地文件路径、代码包文件路径或者网络图片路径，支持PNG及JPG，不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4
	　　　　success: res=> {
				this.errorToast(res,'success');
	　　　　　　// 转发成功之后的回调
	　　　　　　if(res.errMsg == 'shareAppMessage:ok'){
					this.errorToast('分享成功','success');
	　　　　　　}
	　　　　},
	　　　　fail: res=> {
	　　　　　　// 转发失败之后的回调
	　　　　　　if(res.errMsg == 'shareAppMessage:fail cancel'){
	　　　　　　　　// 用户取消转发
					this.errorToast('取消分享','error');
	　　　　　　}else if(res.errMsg == 'shareAppMessage:fail'){
	　　　　　　　　// 转发失败
					this.errorToast('分享失败请重新尝试','error');
	　　　　　　}
	　　　　}
	　　}
	　　// 来自页面内的按钮的转发
	　　if( options.from === 'button' ){
	　　　　var eData = options.target.dataset;
	　　}
	　　// 返回shareObj
	　　return shareObj;
	},
	// 跳转详情页
	toDetailsPage(event) {
		const id = event.currentTarget.dataset.videoid;
		const type = event.currentTarget.dataset.type;
		wx.navigateTo({
			url: `./videoDetails?id=${id}&type=${type}`
		})
	},
	// 跳转广告详情
	toAdvDetails(event) {
		const img = event.currentTarget.dataset.img;
		const url = event.currentTarget.dataset.url;
		wx.navigateTo({
			url: `../advDetails/index?img=${img}&url=${url}`
		})
	},
	// 错误提示
	errorToast(text, type) {
		switch(type) {
			case 'success':
				Notify({
					text: text,
					color: '#ffffff',
					backgroundColor: '#008000'
				});
				break;
			case 'error':
				Notify({
					text: text,
					color: '#ffffff',
					backgroundColor: '#FF0000'
				});
				break;
			case 'warn':
				Notify({
					text: text,
					color: '#ffffff',
					backgroundColor: '#FFA500'
				});
				break;
		}
	},
	// 授权获取
	toGetUserInfor() {
		const userInfo = wx.getStorageSync('userInfo')
		const userId = wx.getStorageSync('userId')
		if (userInfo && userId) {
			app.globalData.userInfo = userInfo;
			app.globalData.uid = userId;
		}else{
			// 获取用户信息
			wx.getSetting({
				success: res => {
					if (res.authSetting['scope.userInfo']) {
						// 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
						wx.getUserInfo({
							success: res => {
								// 可以将 res 发送给后台解码出 unionId
								app.globalData.userInfo = res.userInfo
								wx.setStorageSync('userInfo', res.userInfo)
								// 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
								// 所以此处加入 callback 以防止这种情况
								if (app.userInfoReadyCallback) {
									app.userInfoReadyCallback(res)
								}
							},
							fail: () => {
								app.globalData.userInfo = null;
								wx.redirectTo({
									url: `../login/index?page=/pages/videoDetails/videoDetails&id=${this.data.currentPageId}&type=${this.data.currentPageType}`
								})
							}
						})
					}
					else{
						wx.redirectTo({
							url: `../login/index?page=/pages/videoDetails/videoDetails&id=${this.data.currentPageId}&type=${this.data.currentPageType}`
						})
					}
				}
			})
		}
	},
	onLoad(res) {
		this.toGetUserInfor();
		this.setData({
			currentPageId: res.id,
			currentPageType: res.type,
			advObj: app.globalData.advObj
		})
		this.toGetDetails();
	},
	// 下拉刷新
	onPullDownRefresh() {
		this.toGetDetails();
	}
})
